package facilius.controller.action.usuario;

import facilius.model.ServiceLocator;
import facilius.model.UserConstants;
import facilius.model.pojo.Usuario;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.mentawai.action.BaseLoginAction;

/**
 *
 * @author Graciano
 */
public class UsuarioLoginAction extends BaseLoginAction {

    @Override
    public String execute() throws Exception {

        String consequence = ERROR;
        String usuarioLogado = null;
        String grupoUsuarioLogado = null;

        String usuario = input.getString("usuario");
        String senha = input.getString("senha");

        try {

            Map<String, Object> criteria = new HashMap<String, Object>();
            criteria.put("usuario", usuario);
            criteria.put("senha", senha);
            List<Usuario> user = ServiceLocator.getUsuarioService().readByCriteria(criteria);

            if (user == null || user.size() > 1) {
                //usuario inválido
            } else {
                if (user.get(0).getTipo() == UserConstants.ADMINISTRADOR) {
                    usuarioLogado = user.get(0).getNome();
                    grupoUsuarioLogado = "GR_ADMIN";
                }
                if (user.get(0).getTipo() == UserConstants.PROFESSOR) {
                    usuarioLogado = user.get(0).getNome();
                    grupoUsuarioLogado = "GR_PROFESSOR";
                }
                if (user.get(0).getTipo() == UserConstants.ALUNO) {
                    usuarioLogado = user.get(0).getNome();
                    grupoUsuarioLogado = "GR_ALUNO";
                }
                consequence = SUCCESS;
                
            }

            if (usuarioLogado != null) {
                setUserSession(usuarioLogado);
                setUserGroup(grupoUsuarioLogado);
                consequence = grupoUsuarioLogado;
                session.setAttribute("userId", user.get(0).getId());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }


        return consequence;

    }
}
